/**
 * Created by LinJe on 2015/9/21.
 * 处理首页的抓取和发布数据
 */
(function( $ ) {

    var commentServers = {

        //数据浅拷贝
        'extend': function( defs, settings ) {
            for ( var attr in defs ) {
                if ( typeof settings[attr] != 'undefined' ) {
                    defs[attr] = settings[attr];
                }
            }
        },


        /**
         * common() 公共方法
         * @param settings
         * settings.type 默认值'POST', 请求的类型
         * settings.dataType 数据类型
         * settings.url 请求数据的地址
         * settings.data 要发送的数据
         * settings.callBack 请求之后的回调函数
         * 回调函数参数 msg 的数据格式如下：
         * {
         *      'data': msg, //成功提交之后返回的数据
         *      'status': 1, //0代表提交失败，1代表提交成功
         *      'error': '失败信息' //提交失败的信息提示
        }
         */
        'common': function( settings ) {
            //设置默认值
            var defs = {
                'type': 'POST',
                'dataType': 'json',
                'url': '',
                'data': {},
                'callBack': function(){}
            };

            //覆盖数据
            this.extend(defs, settings);

            //经过ajax处理表单数据之后返回结果
            $.ajax({
                type: defs.type,
                dataType: defs.dataType,
                url: defs.url,
                data: defs.data,
                success: function (msg) {
                    defs.callBack && defs.callBack(msg);
                },
                error: function(msg) {
                    defs.callBack && defs.callBack({'error':true, 'description':'服务器异常', 'data':msg});
                }
            });
        },


        //抓取数据
        'drabData': function( settings, callBack ) {
            //异步请求的示例
            /*
             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': 'http://expertgum.darlie.com.cn/wechat/SaveInfo',
             'data': {
             'url': settings.url //需要抓取数据的url
             },
             'callBack': callBack
             });
             */

            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            var data = {
                "status": "success", //失败状态有 success，error
                "error": "请求失败", //如果是error 则返回对应信息显示到弹框中
                "data": {
                    "pics": {
                        "id": 5, //图片ID
                        "url": "http://ww1.sinaimg.cn/thumbnail/678957begw1ex8ok84ztvj20xc18gwoy.jpg" //图片地址
                    },
                    "productName": "商品名称",
                    "productId": 123,//商品ID
                    "percent": "100%"//运算类型
                }
            };

            callBack && callBack(data);
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },


        //发布微博提交数据
        'publishData': function( settings, callBack ) {
            //异步请求示例参考上面
            ///....///
            ///....///

            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //微博数据
            var data = {
                "code": 200, //状态200成功，201状态失败
                "description": "sucess",//状态的描述
                "detail": {
                    "status": "1",// 1为成功创建，2为已存在未更新
                    "productUrl": "http://www.5icool.org/a/201005/427.html"//对应商品url
                }
            };

            callBack && callBack(data);
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },


        //获取讨论数据
        'getProductData': function( settings, callBack ) {


             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/productComment/findUGC',
             'data': {
                 'productId': settings.productId,
                 'ugcType': settings.ugcType,
                 'pageStep':settings.pageStep,
                 'count':settings.count
             },
             'callBack': callBack
             });



            ///////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //微博数据
            /*
            var data = {
                "code": 200,
                "description": "sucess",
                "detail": {
                    "totalSize": "5",
                    "ugcBeans": [
                        {
                            "ugcId": "1",
                            "ugcType": "2",
                            "time": "7分钟前",
                            "userAvatar": "../img/temp/5050.jpg",
                            "userName": "菠萝也结衣1",
                            "userUrl": "http://www.jd.com/",
                            "prodComment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "commentUrl": "http://www.baidu.com",
                            "commentNum": "50",
                            "goodChannelNum": "23",
                            "normalChannelNum": "13",
                            "badChannelNum": "19",
                            "chooseChannel": "1"
                        },
                        {
                            "ugcId": "2",
                            "ugcType": "2",
                            "time": "7分钟前",
                            "userAvatar": "http://static.sporttery.cn/images/130517/18-13051G32G3-52.jpg",
                            "userName": "蜡笔小新",
                            "userUrl": "http://www.jd.com/",
                            "prodComment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "commentUrl": "http://www.baidu.com",
                            "commentNum": "60",
                            "goodChannelNum": "14",
                            "normalChannelNum": "1",
                            "badChannelNum": "32",
                            "chooseChannel": "2"
                        },
                        {
                            "ugcId": "3",
                            "ugcType": "2",
                            "time": "7分钟前",
                            "userAvatar": "http://static.sporttery.cn/images/130517/18-13051G32G3-52.jpg",
                            "userName": "菠萝也结衣3",
                            "userUrl": "http://www.jd.com/",
                            "prodComment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "commentUrl": "http://www.baidu.com",
                            "commentNum": "39",
                            "goodChannelNum": "43",
                            "normalChannelNum": "13",
                            "badChannelNum": "4",
                            "chooseChannel": "3"
                        },
                        {
                            "ugcId": "4",
                            "ugcType": "2",
                            "time": "7分钟前",
                            "userAvatar": "http://static.sporttery.cn/images/130517/18-13051G32G3-52.jpg",
                            "userName": "菠萝也结衣4",
                            "userUrl": "http://www.jd.com/",
                            "prodComment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "commentUrl": "http://www.baidu.com",
                            "commentNum": "23",
                            "goodChannelNum": "5",
                            "normalChannelNum": "12",
                            "badChannelNum": "3",
                            "chooseChannel": "3"
                        }
                    ]
                }
            };

            callBack && callBack(data);

            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },

        //根据ugcId获取单条ugc数据
        'getSingleUgc': function( settings, callBack ) {

            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/productComment/findUGCById',
                'data': {
                    'ugcId': settings.ugcId
                },
                'callBack': callBack
            });

            ///////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //微博数据

            /*
            var data = {
                "code": 200,
                "description": "sucess",
                "detail": {
                    "totalSize": "1",
                    "ugcBeans": [
                        {
                            "ugcId": "1",
                            "ugcType": "2",
                            "time": "7分钟前",
                            "userAvatar": "../img/temp/5050.jpg",
                            "userName": "菠萝也结衣1",
                            "userUrl": "http://www.jd.com/",
                            "prodComment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "commentUrl": "http://www.baidu.com",
                            "commentNum": "50",
                            "goodChannelNum": "23",
                            "normalChannelNum": "13",
                            "badChannelNum": "19",
                            "chooseChannel": "1"
                        }
                    ]
                }
            };

            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },

        //添加一条ugc
        'addUgc': function( settings, callBack ) {

            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/productComment/addUGC',
                'data': {
                    'productId': settings.productId,
                    'ugcType': settings.ugcType,
                    'url' : settings.url,
                    'prodComment':settings.prodComment
                },
                'callBack': callBack
            });


            ///////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //微博数据
            /*
            var data = {
                "code": 200,
                "description": "sucess",
                "detail": {
                    "ugcBeans": [
                        {
                            "ugcId": "124",
                            "ugcType": "2",
                            "time": "1分钟前",
                            "userAvatar": "../img/temp/5050.jpg",
                            "userName": "菠萝也结衣1",
                            "userUrl": "http://www.jd.com/",
                            "prodComment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "commentUrl": "http://www.baidu.com",
                            "commentNum": "0",
                            "goodChannelNum": "2",
                            "normalChannelNum": "1",
                            "badChannelNum": "19",
                            "chooseChannel": "3"
                        }
                    ]
                }
            };

            callBack && callBack(data);

            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },

        //ugc投票
        'ugcVote': function( settings, callBack ) {

            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/channel/chooseChannel',
                'data': {
                    'ugcId': settings.ugcId,
                    'ugcType': settings.ugcType,
                    'chooseChannel': settings.chooseChannel
                },
                'callBack': callBack
            });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            /*
            var msg = {
                "code": 200,
                "description": "sucess",
                "detail": {
                    "id": "2", //返回原来对应的评论id ，可选用
                    "goodChannelNum": "888", //好通道的数量
                    "normalChannelNum": "333", //一般通道的数量
                    "badChannelNum": "222", //坏通道的数量
                    "chooseChannel": "2"
                }
            };
            callBack && callBack(msg);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },

        //删除一条ugc数据
        'removeProdData': function( settings, callBack ) {
            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/productComment/delete',
                'data': {
                    'cid': settings.ugcId //该条评论的id
                },
                'callBack': callBack
            });
            ////////////////////////////以下是前端测试效果用////////////////////////////
            var msg = {
                'code': 200,
                "description": "sucess"
            };
            //期望返回的json数据格式如下
            callBack && callBack(msg);
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },

        //获取评论数据 返回json
        'getCommentDatas': function( settings, callBack ) {

            //异步请求的示例

             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/getComment',
             'data': {
                 'ugcid': settings.ugcid, //该条微博的id值
                 'pageStep': settings.pageStep, //当前分页的区间，从1开始，代表第一页
                 'count': settings.count //每次请求时获取的微博条数 即每页条数
             },
             'callBack': callBack
             });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下

            /*
            var data = {

                "code": 200,
                "description": "sucess",
                "totalSize": "5",

                //评论的数据内容
                'commentData': [
                    //第一条评论
                    {
                        //该条评论的id值
                        'cid': 1,

                        //评论的用户头像
                        'commentAvatar': '../img/temp/3030.jpg',

                        //评论的用户名
                        'commentUserName': '亚历山大',

                        //评论的用户url地址
                        'commentUserUrl': 'http://www.alaba.com',

                        //如果是回复型评论，则有被回复的用户名，如果没有则默认留空字符串 “”
                        'commentReplyUserName': '蜡笔小新',

                        //被评论的用户url地址
                        'commentReplyUserUrl': 'http://www.labixiaoxin.com',

                        //评论的内容
                        'commentContent': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。',

                        //多久之前发布的评论
                        'commentPublishTime': '2分钟前'

                    },

                    //第二条评论
                    {
                        //该条评论的id值
                        'cid': 2,

                        //评论的用户头像
                        'commentAvatar': '../img/temp/3030.jpg',

                        //评论的用户名
                        'commentUserName': '蜡笔小新',

                        //评论的用户url地址
                        'commentUserUrl': 'http://www.labixiaoxin.com',

                        //如果是回复型评论，则有被回复的用户名，如果没有则默认留空字符串 “”
                        'commentReplyUserName': '亚历山大',

                        //被评论的用户url地址
                        'commentReplyUserUrl': 'http://www.alaba.com',

                        //评论的内容
                        'commentContent': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的222222222',

                        //多久之前发布的评论
                        'commentPublishTime': '7分钟前'

                    }
                ],

                //该条微博评论的分页页码，此处希望是html
                'commentPageCode': '<a class="pre">上一页</a><a class="c">1</a><a href="javascript:;">2</a><a href="javascript:;">3</a><a href="javascript:;">4</a><a href="javascript:;">3</a><a href="javascript:;">5</a><a href="javascript:;">6</a> ... <a href="javascript:;">43</a><a href="javascript:;" class="next">下一页</a>'

            };

            callBack && callBack(data);

            */
            ////////////////////////////以上是前端测试效果用////////////////////////////

        },

        //添加回复
        'addFirstComment': function( settings, callBack ) {



            //异步请求的示例

             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/saveComment',
             'data': {
                 'ugcId':settings.ugcId,
                 'replayUserId':settings.replayUserId,
                 'commentContent':settings.commentContent
             },
             'callBack': callBack
             });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下

            /*
            var data = {

                "code": 200,
                "description": "sucess",

                //该条评论的id值
                'cid': 100,

                //评论的内容
                'commentContent': '第一层评论，对该条ugc的直接评论',

                //多久之前发布的评论
                'commentPublishTime': '1分钟前'
            };

            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },

        //添加回复的回复
        'addComment': function( settings, callBack ) {


             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/saveComment',
             'data': {
                  'uid':settings.uid,//被回馈用户的id
                 'commentAvatar': settings.commentAvatar,
                 'commentUserName': settings.commentUserName,
                 'commentReplyUserName': settings.commentReplyUserName, //此处如果是undefined=>评论微博， 有值=>回复评论
                 'commentContent': settings.commentContent,
                 'replayUserId': settings.uid,
                 'ugcId':settings.ugcId,
                 'cid':settings.cid
             },
             'callBack': callBack
             });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            /*
            //期望返回的json数据格式如下
            var data = {

                "code": 200,
                "description": "sucess",

                //该条评论的id值
                'cid': 4,

                //评论的用户头像
                'commentAvatar': '../img/temp/3030.jpg',

                //评论的用户名
                'commentUserName': '蜡笔小新',

                //评论的用户url地址
                'commentUserUrl': 'http://www.labixiaoxin.com',

                //如果是回复型评论，则有被回复的用户名，如果没有则默认留空字符串 “”
                'commentReplyUserName': '亚历山大',

                //被评论的用户url地址
                'commentReplyUserUrl': 'http://www.alaba.com',

                //评论的内容
                'commentContent': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的44444',

                //多久之前发布的评论
                'commentPublishTime': '1分钟前'
            };

            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////

        },


        //删除一条评论
        'removeComment': function( settings, callBack ) {


             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/delete',
             'data': {
             'cid': settings.cid //该条评论的id
             },
             'callBack': callBack
             });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            /*
            //期望返回的json数据格式如下
            var data = {
                'code': 200,
                "description": "sucess"
            };
            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////

        }

    };

    window.commentServers = commentServers;

})( jQuery );